import logging
from fastapi import FastAPI
from pydantic import BaseModel
from typing import Union
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles

# 创建根日志记录器
logger = logging.getLogger(__name__)

# 导入新的API路由
from api.datasets import router as datasets_router
from api.images import router as images_router

# 导入医疗场景API路由
from medical_scenes.api.router import router as medical_scenes_router, register_scene_routes

app = FastAPI(title="Medical Scenes API", version="1.0.0")

# 添加CORS中间件以解决跨域问题
app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],  # 在生产环境中应该指定具体的域名
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)


# 定义请求体模型

# 定义响应体模型



##=========这里是加法器的一个测试代码，不是业务后续可以删掉=============
# 根路径，返回欢迎信息
@app.get("/")
def read_root():
    return {"message": "欢迎使用API测试"}


# 注册新的API路由
app.include_router(datasets_router)
app.include_router(images_router)

# 注册医疗场景API路由
app.include_router(medical_scenes_router)

# 注册各场景特定路由
register_scene_routes(app)

# 挂载静态文件目录
app.mount("/data", StaticFiles(directory="./data"), name="data")
# 可以通过http://localhost:8000/data/chest-xray/1-s2.0-S0929664620300449-gr2_lrg-a.jpg访问静态文件
# 可以通过http://localhost:8000/data/liver/source_axial_LR.nii.gz访问静态文件

# 应用启动事件
@app.on_event("startup")
async def startup_event():
    pass


# 应用关闭事件
@app.on_event("shutdown")
async def shutdown_event():
    pass


if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)
